Completed
Push — master ( 158ed8...34f194 )
by Alejandro
04:53 queued 02:19
created

Home.componentDidMount   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 3
ccs 1
cts 1
cp 1
rs 10
c 0
b 0
f 0
cc 1
crap 1
1
import { faChevronRight as chevronIcon } from '@fortawesome/free-solid-svg-icons';
2
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
3
import { isEmpty, values } from 'ramda';
4
import React from 'react';
5
import { Link } from 'react-router-dom';
6
import { ListGroup, ListGroupItem } from 'reactstrap';
7
import PropTypes from 'prop-types';
8
import './Home.scss';
9
10
export default class Home extends React.Component {
11
  static propTypes = {
12
    resetSelectedServer: PropTypes.func,
13
    servers: PropTypes.object,
14
  };
15
16
  componentDidMount() {
17 4
    this.props.resetSelectedServer();
18
  }
19
20
  render() {
21 4
    const { servers: { list, loading } } = this.props;
22 4
    const servers = values(list);
23 4
    const hasServers = !isEmpty(servers);
24
25 4
    return (
26
      <div className="home">
27
        <h1 className="home__title">Welcome to Shlink</h1>
28
        <h5 className="home__intro">
29
          {!loading && hasServers && <span>Please, select a server.</span>}
30
          {!loading && !hasServers && <span>Please, <Link to="/server/create">add a server</Link>.</span>}
31
          {loading && <span>Trying to load servers...</span>}
32
        </h5>
33
34
        {!loading && hasServers && (
35
          <ListGroup className="home__servers-list">
36
            {servers.map(({ name, id }) => (
37 2
              <ListGroupItem
38
                key={id}
39
                tag={Link}
40
                to={`/server/${id}/list-short-urls/1`}
41
                className="home__servers-item"
42
              >
43
                {name}
44
                <FontAwesomeIcon icon={chevronIcon} className="home__servers-item-icon" />
45
              </ListGroupItem>
46
            ))}
47
          </ListGroup>
48
        )}
49
      </div>
50
    );
51
  }
52
}
53